package taller.clienteweb.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;

import taller.clienteweb.model.BusinessDelegate;
import taller.dataLayer.vo.ItemSolicitudCompraVO;
import taller.dataLayer.vo.RodamientoVO;
import taller.dataLayer.vo.SolicitudCompraVO;

public class SolicitudCompra extends ServletBase {
	private static final long serialVersionUID = 1L;
       
    
    public SolicitudCompra() {
        super();
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		limpiarMensajes();
		this.redirect(request, response, "/generarSolCompra.jsp");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		limpiarMensajes();
		
		try {
			String items = (String) request.getParameter("itemsDeLaSolicitud");
			
			if (items == null) {
				mensajeAlerta = "La solicitud debe tener por lo menos 1 item";
				this.redirect(request, response, "/generarSolCompra.jsp");
				return;
			}
			
			JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( items );
			JSONArray allItems = jsonObject.getJSONArray("items");
			int cantidadItems = allItems.size();
			//System.out.println(cantidadItems);
			
			if(items.equals("") || cantidadItems <= 0) {
				mensajeAlerta = "La solicitud debe tener por lo menos 1 item";
				this.redirect(request, response, "/generarSolCompra.jsp");
				return;
			}
			
			List<ItemSolicitudCompraVO> itemsVO = new ArrayList<ItemSolicitudCompraVO>();
			
			for(int i = 0 ; i < cantidadItems ; i++) {
				
				JSONObject item = allItems.getJSONObject(i);
				
				String codigo = item.getString("codigo");
				String descripcion = item.getString("descripcion");
				String caracteristica = item.getString("caracteristica"); 
				String marca = item.getString("marca");
				String origen = item.getString("origen");
				Integer cantidad = item.getInt("cantidad");
				RodamientoVO rodamientoVO = new RodamientoVO(codigo, descripcion, caracteristica, marca, origen);
				ItemSolicitudCompraVO itemVO = new ItemSolicitudCompraVO(cantidad, rodamientoVO, null);
				itemsVO.add(itemVO);
			}
				
			SolicitudCompraVO solicitudVO = new SolicitudCompraVO();
			solicitudVO.setItems(itemsVO);
			
			solicitudVO = BusinessDelegate.getInstance().generarSolicitudCompra(solicitudVO);
			//System.out.println("Nro. de Cotizacion recibida: " + cotizacion.getNumero());
			//request.setAttribute("cotizacion", cotizacion);
			mensajeExito = "Solicitud de compra " +  solicitudVO.getNumero() + " enviada a la Oficiana de Ventas.";
			redirect(request, response, "/resultadoEnvio.jsp");
		}catch (Exception e) {
			mensajeError = "Ocurri&oacute; un error al generar la solicitud de compra. Intente nuevamente.";
			redirect(request, response, "/generarSolCompra.jsp");
		}
	}

}
